package com.inei.cie.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class CapituloIVDao {
	private UtilDB util;
	SQLiteDatabase db;
	Cursor cursor = null;

	public CapituloIVDao(Context context) {
		util = new UtilDB(context);
	}

	public void ingresarCapitulo4SeccionB(String id_local, int P4_NroPred,
			int P4_2_LindTipo, int P4_2_1A_NroTramo, int P4_2_1A_i,
			int P4_2_1A_f, int P4_2_1B_LongTramo, int P4_2_1C_Cerco,
			int P4_2_1D_Estruc, int P4_2_1E_EstCons, int P4_2_1F_Opin,
			int Version) {
		SQLiteDatabase db = util.getWritableDatabase();
		String sqlInsertDatosCapitulo4SeccionB = "INSERT INTO P4_2N(id_local,P4_NroPred,P4_2_LindTipo,P4_2_1A_NroTramo,"
				+ "P4_2_1A_i,P4_2_1A_f,P4_2_1B_LongTramo,P4_2_1C_Cerco,P4_2_1D_Estruc,P4_2_1E_EstCons,P4_2_1F_Opin,Version,SwCompleto,"
				+ "SwEnviado) " + "VALUES ('"
				+ id_local
				+ "', "
				+ P4_NroPred
				+ ", "
				+ P4_2_LindTipo
				+ ", "
				+ P4_2_1A_NroTramo
				+ ", "
				+ P4_2_1A_i
				+ ", "
				+ P4_2_1A_f
				+ ", "
				+ P4_2_1B_LongTramo
				+ ", "
				+ P4_2_1C_Cerco
				+ ", "
				+ P4_2_1D_Estruc
				+ ", "
				+ P4_2_1E_EstCons
				+ ", "
				+ P4_2_1F_Opin
				+ ", " + Version + ", " + 1 + ", " + 0 + ") ";
		db.execSQL(sqlInsertDatosCapitulo4SeccionB);
		db.close();
	}

	public String comparacionLinderosRegistradoMayorIngresados(String id_local,
			int P4_NroPred, int P4_2_LindTipo, int cantidadLinderosIngresados,
			int cantidadLinderosRegistrados) {
		String mensaje = "";
		for (int i = cantidadLinderosIngresados; i < cantidadLinderosRegistrados; i++) {
			eliminarLinderosFinales(id_local, String.valueOf(P4_NroPred),
					String.valueOf(P4_2_LindTipo), cantidadLinderosRegistrados,
					cantidadLinderosIngresados);
		}
		return mensaje = "Se eliminaron linderos que se habia registrado demas";
	}

	public String comparacionLinderosIngresadosMayorRegistrados(
			String id_local, int P4_NroPred, int P4_2_LindTipo,
			int P4_2_1A_NroTramo, int P4_2_1A_i, int P4_2_1A_f,
			int P4_2_1B_LongTramo, int P4_2_1C_Cerco, int P4_2_1D_Estruc,
			int P4_2_1E_EstCons, int P4_2_1F_Opin, int Version,
			int cantidadLinderosIngresados, int cantidadLinderosRegistrados) {
		String mensaje = "";
		ingresarCapitulo4SeccionB(id_local, P4_NroPred, P4_2_LindTipo,
			P4_2_1A_NroTramo, P4_2_1A_i, P4_2_1A_f, P4_2_1B_LongTramo,
			P4_2_1C_Cerco, P4_2_1D_Estruc, P4_2_1E_EstCons,
			P4_2_1F_Opin, Version);
			mensaje = "Se ingreso el lindero numero "
					+ cantidadLinderosRegistrados;
		return mensaje;
	}

	public String comparacionLinderosRegistradoIgualIngresados() {
		String mensaje = "";
		return mensaje = "Ya registro la cantidad de linderos que desea ingresar";
	}

	public void eliminarLinderosFinales(String idLocal, String numeroPredio,
			String tipoTramo, int linderosRegistrados, int linderosIngresados) {
		String[] args = new String[] { idLocal, tipoTramo, numeroPredio };
		SQLiteDatabase db = util.getWritableDatabase();
		int P4_2_1A_NroTramo = 0;
		Cursor cursor = db
				.rawQuery(
						"SELECT MAX(P4_2_1A_NroTramo) FROM P4_2N where id_local=? and P4_2_LindTipo=? and P4_NroPred=?",
						args);
		if (cursor.moveToFirst()) {
			do {
				P4_2_1A_NroTramo = Integer.parseInt(cursor.getString(0));
			} while (cursor.moveToNext());
		}
		db.execSQL(
				"DELETE FROM P4_2N WHERE id_local=? and P4_2_LindTipo=? and P4_NroPred=? and " +
				"P4_2_1A_NroTramo = " + P4_2_1A_NroTramo,
				args);
		db.close();
	}

	public int obtenerContenidoLinderoFrente(String idLocal, String numeroPredio) {
		String[] args = new String[] { idLocal, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT id_local FROM P4_2N where P4_2_LindTipo=1 and id_local=? and P4_NroPred=?",
						args);
		int cantidadDatos = cursor.getCount();
		bd.close();
		cursor.close();
		return cantidadDatos;
	}

	public int obtenerContenidoLinderoDerecho(String idLocal,
			String numeroPredio) {
		String[] args = new String[] { idLocal, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT id_local FROM P4_2N where P4_2_LindTipo=2 and id_local=? and P4_NroPred=?",
						args);
		int cantidadDatos = cursor.getCount();
		bd.close();
		cursor.close();
		return cantidadDatos;
	}

	public int obtenerContenidoLinderoFondo(String idLocal, String numeroPredio) {
		String[] args = new String[] { idLocal, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT id_local FROM P4_2N where P4_2_LindTipo=3 and id_local=? and P4_NroPred=?",
						args);
		int cantidadDatos = cursor.getCount();
		bd.close();
		cursor.close();
		return cantidadDatos;
	}

	public int obtenerContenidoLinderoIzquierdo(String idLocal,
			String numeroPredio, int tipoLindero) {
		String[] args = new String[] { idLocal, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT id_local FROM P4_2N where P4_2_LindTipo=" + tipoLindero + " and id_local=? and P4_NroPred=?",
						args);
		int cantidadDatos = cursor.getCount();
		bd.close();
		cursor.close();
		return cantidadDatos;
	}

	public List<Object> obtenerLinderoFrente(String idLocal, String numeroPredio) {
		List<Object> datosLinderoFrente = new ArrayList<Object>();
		String[] args = new String[] { idLocal, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		int lindero_frente = 0;
		Cursor cursor = bd
				.rawQuery(
						"SELECT P4_2_CantTram_Lfrente FROM FRENTE_LINDEROS where id_local=? and P4_NroPred=?",
						args);
		if (cursor.moveToFirst()) {
			do {
				lindero_frente = Integer.parseInt(cursor.getString(0));
				datosLinderoFrente.add(lindero_frente);
			} while (cursor.moveToNext());
		}
		bd.close();
		cursor.close();
		return datosLinderoFrente;
	}

	public List<Object> obtenerLinderoDerecho(String idLocal,
			String numeroPredio) {
		List<Object> datosLinderoDerecho = new ArrayList<Object>();
		String[] args = new String[] { idLocal, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		int lindero_derecho = 0;
		Cursor cursor = bd
				.rawQuery(
						"SELECT P4_2_CantTram_Lderecho FROM FRENTE_LINDEROS where id_local=? and P4_NroPred=?",
						args);
		if (cursor.moveToFirst()) {
			do {
				lindero_derecho = Integer.parseInt(cursor.getString(0));
				datosLinderoDerecho.add(lindero_derecho);
			} while (cursor.moveToNext());
		}
		bd.close();
		cursor.close();
		return datosLinderoDerecho;
	}

	public List<Object> obtenerLinderoFondo(String idLocal, String numeroPredio) {
		List<Object> datosLinderoFondo = new ArrayList<Object>();
		String[] args = new String[] { idLocal, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		int lindero_fondo = 0;
		Cursor cursor = bd
				.rawQuery(
						"SELECT P4_2_CantTram_Lfondo FROM FRENTE_LINDEROS where id_local=? and P4_NroPred=?",
						args);
		if (cursor.moveToFirst()) {
			do {
				lindero_fondo = Integer.parseInt(cursor.getString(0));
				datosLinderoFondo.add(lindero_fondo);
			} while (cursor.moveToNext());
		}
		bd.close();
		cursor.close();
		return datosLinderoFondo;
	}

	public List<Object> obtenerLinderoIzquierdo(String idLocal,
			String numeroPredio) {
		List<Object> datosLinderoIzquierdo = new ArrayList<Object>();
		String[] args = new String[] { idLocal, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		int lindero_izquierdo = 0;
		Cursor cursor = bd
				.rawQuery(
						"SELECT P4_2_CantTram_Lizq FROM FRENTE_LINDEROS where id_local=? and P4_NroPred=?",
						args);
		if (cursor.moveToFirst()) {
			do {
				lindero_izquierdo = Integer.parseInt(cursor.getString(0));
				datosLinderoIzquierdo.add(lindero_izquierdo);
			} while (cursor.moveToNext());
		}
		bd.close();
		cursor.close();
		return datosLinderoIzquierdo;
	}

	public List<Object> obtenerLinderos(String idLocal, String tipoTramo,
			String numeroPredio) {
		List<Object> datosLinderos = new ArrayList<Object>();
		String[] args = new String[] { idLocal, tipoTramo, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		int tipo_tramo = 0;
		int p4_2_1_1 = 0;
		int p4_2_1a_i = 0;
		int p4_2_1a_f = 0;
		float p4_2_1b = 0;
		int p4_2_1c = 0;
		String p4_2_1d = "";
		String p4_2_1e = "";
		String p4_2_1f = "";
		Cursor cursor = bd
				.rawQuery(
						"SELECT p4_2_1a_i, p4_2_1a_f, P4_2_1B_LongTramo, P4_2_1C_Cerco, P4_2_1D_Estruc, P4_2_1E_EstCons, P4_2_1F_Opin FROM P4_2N where id_local=? and P4_2_LindTipo=? and P4_NroPred=?",
						args);
		if (cursor.moveToFirst()) {
			do {
				p4_2_1a_i = Integer.parseInt(cursor.getString(0));
				p4_2_1a_f = Integer.parseInt(cursor.getString(1));
				p4_2_1b = Float.parseFloat(cursor.getString(2));
				p4_2_1c = Integer.parseInt(cursor.getString(3));
				p4_2_1d = cursor.getString(4);
				p4_2_1e = cursor.getString(5);
				p4_2_1f = cursor.getString(6);
				datosLinderos.add(p4_2_1a_i);
				datosLinderos.add(p4_2_1a_f);
				datosLinderos.add(p4_2_1b);
				datosLinderos.add(p4_2_1c);
				datosLinderos.add(p4_2_1d);
				datosLinderos.add(p4_2_1e);
				datosLinderos.add(p4_2_1f);
			} while (cursor.moveToNext());
		}
		bd.close();
		cursor.close();
		return datosLinderos;
	}
	
	public int obtenerCantidadLinderosFrente(String idLocal,
			String numeroPredio) {
		int cantidadLinderosFrente = 0;
		String[] args = new String[] { idLocal, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT P4_2_CantTram_Lfrente FROM FRENTE_LINDEROS where id_local=? and P4_NroPred=?",
						args);
		if (cursor.moveToFirst()) {
			do {
				cantidadLinderosFrente = cursor.getInt(0);
			} while (cursor.moveToNext());
		}
		bd.close();
		cursor.close();
		return cantidadLinderosFrente;
	}
	
	public int obtenerCantidadLinderosDerecho(String idLocal,
			String numeroPredio) {
		int cantidadLinderosDerecho = 0;
		String[] args = new String[] { idLocal, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT P4_2_CantTram_Lderecho FROM FRENTE_LINDEROS where id_local=? and P4_NroPred=?",
						args);
		if (cursor.moveToFirst()) {
			do {
				cantidadLinderosDerecho = cursor.getInt(0);
			} while (cursor.moveToNext());
		}
		bd.close();
		cursor.close();
		return cantidadLinderosDerecho;
	}
	
	public int obtenerCantidadLinderosFondo(String idLocal,
			String numeroPredio) {
		int cantidadLinderosFondo = 0;
		String[] args = new String[] { idLocal, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT P4_2_CantTram_Lfondo FROM FRENTE_LINDEROS where id_local=? and P4_NroPred=?",
						args);
		if (cursor.moveToFirst()) {
			do {
				cantidadLinderosFondo = cursor.getInt(0);
			} while (cursor.moveToNext());
		}
		bd.close();
		cursor.close();
		return cantidadLinderosFondo;
	}
	
	public int obtenerCantidadLinderosIzquierdo(String idLocal,
			String numeroPredio) {
		int cantidadLinderosIzquierdo = 0;
		String[] args = new String[] { idLocal, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT P4_2_CantTram_Lizq FROM FRENTE_LINDEROS where id_local=? and P4_NroPred=?",
						args);
		if (cursor.moveToFirst()) {
			do {
				cantidadLinderosIzquierdo = cursor.getInt(0);
			} while (cursor.moveToNext());
		}
		bd.close();
		cursor.close();
		return cantidadLinderosIzquierdo;
	}
	
	public String obtenerObservacion(String idLocal, int numeroPredio){
		String observacion="";
		String[] args = new String[] { idLocal, numeroPredio + "" };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT P4_1_Obs FROM FRENTE_LINDEROS where id_local=? and P4_NroPred=?",
						args);
		if (cursor.moveToFirst()) {
			do {
				observacion = cursor.getString(0);
			} while (cursor.moveToNext());
		}
		bd.close();
		cursor.close();
		return observacion;
	}

	public void ingresarCapitulo4(String id_local, int P4_NroPredio, int version) {
		SQLiteDatabase db = util.getWritableDatabase();
		String sqlInsertDatosCapitulo4SeccionB = "INSERT INTO FRENTE_LINDEROS("
				+ "id_local,P4_NroPred,"
				+ "Version,SwCompleto,SwEnviado) " + "VALUES ('"
				+ id_local
				+ "', "
				+ P4_NroPredio
				+ ", "
				+ version
				+ ", "
				+ 1
				+ ", "
				+ 0 + ") ";
		db.execSQL(sqlInsertDatosCapitulo4SeccionB);
		db.close();
	}
	
	public int verificarExistenciaCapitulo4(String id_local, int P4_NroPredio) {
		String[] args = new String[] { id_local, P4_NroPredio + "" };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT * FROM FRENTE_LINDEROS where id_local=? and P4_NroPred=?",
						args);
		int cantidadDatos = cursor.getCount();
		bd.close();
		cursor.close();
		return cantidadDatos;
	}

	public void eliminarLindero(String idLocal, String tipoTramo,
			String numeroPredio) {
		String[] args = new String[] { idLocal, tipoTramo, numeroPredio };
		SQLiteDatabase db = util.getWritableDatabase();
		db.execSQL("DELETE FROM P4_2N "
				+ "WHERE id_local=? and P4_2_LindTipo=? and P4_NroPred=?",
				args);
		db.close();
	}

	public void modificarCapitulo4SeccionB(String id_cedula, int predio_actual,
			int tipo_tramo, int anterior_p4_2_1a_i, int anterior_p4_2_1a_f,
			int final_p4_2_1a_i, int final_p4_2_1a_f, int p4_2_1b,
			int p4_2_1c, int p4_2_1d, int p4_2_1e, int p4_2_1f) {
		SQLiteDatabase db = util.getWritableDatabase();
		String sqlModificarDatosCapitulo4SeccionB = "UPDATE P4_2N SET "
				+ "P4_2_1A_i='"
				+ final_p4_2_1a_i
				+ "',"
				+ "P4_NroPred='"
				+ predio_actual
				+ "',"
				+ "P4_2_1A_f='"
				+ final_p4_2_1a_f
				+ "',"
				+ "P4_2_1B_LongTramo='"
				+ p4_2_1b
				+ "',"
				+ "P4_2_1C_Cerco='"
				+ p4_2_1c
				+ "',"
				+ "P4_2_1D_Estruc='"
				+ p4_2_1d
				+ "',"
				+ "P4_2_1E_EstCons='"
				+ p4_2_1e
				+ "',"
				+ "P4_2_1F_Opin='"
				+ p4_2_1f
				+ "' "
				+ "WHERE id_local='"
				+ id_cedula
				+ "' and P4_NroPred="
				+ predio_actual
				+ " and P4_2_LindTipo="
				+ tipo_tramo
				+ " and P4_2_1A_i="
				+ anterior_p4_2_1a_i
				+ " and P4_2_1A_f=" + anterior_p4_2_1a_f + " ";
		db.execSQL(sqlModificarDatosCapitulo4SeccionB);
		db.close();
	}
	
	public String obtenerEscala(String codLocal, String numeroPredio) {
		String escala = null;
		String[] args = new String[] { codLocal, numeroPredio };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT P4_Escala FROM FRENTE_LINDEROS where id_local=? and P4_NroPred=?",
						args);
		if (cursor.moveToFirst()) {
			do {
				escala = cursor.getString(0);
			} while (cursor.moveToNext());
		}
		bd.close();
		cursor.close();
		return escala;
	}
	
	public void ingresarEscala(String id_local, int P4_NroPredio,
			String P4_Escala, int version) {
		SQLiteDatabase db = util.getWritableDatabase();
		String sqlInsertDatosCapitulo4SeccionB = "INSERT INTO FRENTE_LINDEROS("
				+ "id_local,P4_NroPred,P4_Escala,Version,SwCompleto,SwEnviado) " 
				+ "VALUES ('"
				+ id_local
				+ "', "
				+ P4_NroPredio
				+ ", '"
				+ P4_Escala
				+ "', "
				+ version
				+ ", "
				+ 1
				+ ", "
				+ 0 + ") ";
		db.execSQL(sqlInsertDatosCapitulo4SeccionB);
		db.close();
	}
	
	public Boolean verificarCap4Existe(String idLocal, int numeroPredio){
		String[] args = new String[] { idLocal, numeroPredio + "" };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT * FROM FRENTE_LINDEROS where id_local=? and P4_NroPred=?",
						args);
		int escalaExiste = cursor.getCount();
		bd.close();
		cursor.close();
		if(escalaExiste > 0){
			return true;
		} else{
			return false;
		}
	}
	
	public void actualizarEscala(String id_local, int P4_NroPredio, String escala) {
		SQLiteDatabase bd = util.getWritableDatabase();
		ContentValues valores = new ContentValues();
		valores.put("P4_Escala", escala);

		int ind = bd
				.update("FRENTE_LINDEROS",
						valores,
						"id_local=? and P4_NroPred=?",
						new String[] { id_local + "",
								P4_NroPredio + "" });
		bd.close();
	}
	
	public void actualizarFoto(String id_local, int P4_NroPredio, String nombreFoto) {
		SQLiteDatabase bd = util.getWritableDatabase();
		ContentValues valores = new ContentValues();
		valores.put("P4_1_Foto", nombreFoto);

		int ind = bd
				.update("FRENTE_LINDEROS",
						valores,
						"id_local=? and P4_NroPred=?",
						new String[] { id_local + "",
								P4_NroPredio + "" });
		bd.close();
	}
	
	public void actualizarLinderosFrente(String id_local, int P4_NroPredio, int frente) {
		SQLiteDatabase bd = util.getWritableDatabase();
		ContentValues valores = new ContentValues();
		valores.put("P4_2_CantTram_Lfrente", frente);

		int ind = bd
				.update("FRENTE_LINDEROS",
						valores,
						"id_local=? and P4_NroPred=?",
						new String[] { id_local + "",
								P4_NroPredio + "" });
		bd.close();
	}
	
	public void actualizarLinderosDerecho(String id_local, int P4_NroPredio, int derecho) {
		SQLiteDatabase bd = util.getWritableDatabase();
		ContentValues valores = new ContentValues();
		valores.put("P4_2_CantTram_Lderecho", derecho);

		int ind = bd
				.update("FRENTE_LINDEROS",
						valores,
						"id_local=? and P4_NroPred=?",
						new String[] { id_local + "",
								P4_NroPredio + "" });
		bd.close();
	}
	
	public void actualizarLinderosFondo(String id_local, int P4_NroPredio, int fondo) {
		SQLiteDatabase bd = util.getWritableDatabase();
		ContentValues valores = new ContentValues();
		valores.put("P4_2_CantTram_Lfondo", fondo);

		int ind = bd
				.update("FRENTE_LINDEROS",
						valores,
						"id_local=? and P4_NroPred=?",
						new String[] { id_local + "",
								P4_NroPredio + "" });
		bd.close();
	}
	
	public void actualizarLinderosIzquierdo(String id_local, int P4_NroPredio, int izquierdo) {
		SQLiteDatabase bd = util.getWritableDatabase();
		ContentValues valores = new ContentValues();
		valores.put("P4_2_CantTram_Lizq", izquierdo);

		int ind = bd
				.update("FRENTE_LINDEROS",
						valores,
						"id_local=? and P4_NroPred=?",
						new String[] { id_local + "",
								P4_NroPredio + "" });
		bd.close();
	}
	
	public Boolean tramoInicialRegistrado(String idLocal, int P4_NroPredio, 
			int tramoInicial){
		Boolean tramoRegistrado = null;
		String[] args = new String[] { idLocal, P4_NroPredio + ""};
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT P4_2_1A_i FROM P4_2N where id_local=? and P4_NroPred=?",
						args);
		if(cursor.getCount() > 0){
			if (cursor.moveToFirst()) {
				do {
					if(tramoInicial <= cursor.getInt(0)){
						tramoRegistrado = true;
						break;
					} else{
						tramoRegistrado = false;
					}
				} while (cursor.moveToNext());
			}
		} else{
			tramoRegistrado = false;
		}
		bd.close();
		cursor.close();
		return tramoRegistrado;
	}
	
	public Boolean tramoFinalRegistrado(String idLocal, int P4_NroPredio, 
			int tramoFinal){
		Boolean tramoRegistrado = null;
		String[] args = new String[] { idLocal, P4_NroPredio + "" };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT P4_2_1A_f FROM P4_2N where id_local=? and P4_NroPred=?",
						args);
		if(cursor.getCount() > 0){
			if (cursor.moveToFirst()) {
				do {
					if(tramoFinal <= cursor.getInt(0)){
						tramoRegistrado = true;
						break;
					} else{
						tramoRegistrado = false;
					}
				} while (cursor.moveToNext());
			}
		} else{
			tramoRegistrado = false;
		}
		bd.close();
		cursor.close();
		return tramoRegistrado;
	}
	
	public int cargarTramoInicial(String codLocal, int numeroPredio){
		int tramoInicial = 0;
		String[] args = new String[] { codLocal, numeroPredio + "" };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT * FROM P4_2N where id_local=? and P4_NroPred=?",
						args);
		tramoInicial = cursor.getCount();
		if(tramoInicial == 0){
			tramoInicial = 1;
		} else{
			tramoInicial = cursor.getCount() + 1;
		}
		bd.close();
		cursor.close();
		return tramoInicial;
	}
	
	public int cargarTramoInicialAgregar(String codLocal, int numeroPredio, int tipoLindero){
		int tramoInicial = 0;
		String[] args = new String[] { codLocal, numeroPredio + ""};
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursorFrente = null;
		Cursor cursorDerecha = null;
		Cursor cursorFondo = null;
		Cursor cursorIzquierda = null;
		int totalTramos = 0;
		cursorFrente = bd
				.rawQuery(
						"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=1",
						args);
		totalTramos = cursorFrente.getCount();
		tramoInicial = totalTramos + 1;
		if(tipoLindero == 2){
			cursorDerecha = bd
					.rawQuery(
							"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=2",
							args);
			totalTramos = cursorFrente.getCount() + cursorDerecha.getCount();
			tramoInicial = totalTramos + 1;
			cursorFrente.close();
			cursorDerecha.close();
		}
		if(tipoLindero == 3){
			cursorDerecha = bd
					.rawQuery(
							"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=2",
							args);
			cursorFondo = bd
					.rawQuery(
							"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=3",
							args);
			totalTramos = cursorFrente.getCount() + cursorDerecha.getCount() + cursorFondo.getCount();
			tramoInicial = totalTramos + 1;
			cursorFrente.close();
			cursorDerecha.close();
			cursorFondo.close();
		}
		if(tipoLindero == 4){
			cursorDerecha = bd
					.rawQuery(
							"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=2",
							args);
			cursorFondo = bd
					.rawQuery(
							"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=3",
							args);
			cursorIzquierda = bd
					.rawQuery(
							"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=4",
							args);
			totalTramos = cursorFrente.getCount() + cursorDerecha.getCount() + cursorFondo.getCount() + 
					cursorIzquierda.getCount();
			tramoInicial = totalTramos + 1;
			cursorFrente.close();
			cursorDerecha.close();
			cursorFondo.close();
			cursorIzquierda.close();
		}
		bd.close();
		return tramoInicial;
	}
	
	public int cargarTramoInicialCierraLinderos(String codLocal, int numeroPredio){
		int tramoInicial = 0;
		String[] args = new String[] { codLocal, numeroPredio + "" };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT * FROM P4_2N where id_local=? and P4_NroPred=?",
						args);
		tramoInicial = cursor.getCount() + 1;
		bd.close();
		cursor.close();
		return tramoInicial;
	}
	
	public int cargarTramoFinal(String codLocal, int numeroPredio){
		int tramoFinal = 0;
		String[] args = new String[] { codLocal, numeroPredio + "" };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursor = bd
				.rawQuery(
						"SELECT * FROM P4_2N where id_local=? and P4_NroPred=?",
						args);
		tramoFinal = cursor.getCount();
		if(tramoFinal == 0){
			tramoFinal = 2;
		} else{
			tramoFinal = cursor.getCount() + 2;
		}
		bd.close();
		cursor.close();
		return tramoFinal;
	}
	
	public int cargarTramoFinalAgregar(String codLocal, int numeroPredio, int tipoLindero){
		int tramoFinal = 0;
		String[] args = new String[] { codLocal, numeroPredio + "" };
		SQLiteDatabase bd = util.getReadableDatabase();
		Cursor cursorFrente = null;
		Cursor cursorDerecha = null;
		Cursor cursorFondo = null;
		Cursor cursorIzquierda = null;
		int totalTramos = 0;
		cursorFrente = bd
				.rawQuery(
						"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=1",
						args);
		totalTramos = cursorFrente.getCount();
		tramoFinal = totalTramos + 2;
		if(tipoLindero == 2){
			cursorDerecha = bd
					.rawQuery(
							"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=2",
							args);
			totalTramos = cursorFrente.getCount() + cursorDerecha.getCount();
			tramoFinal = totalTramos + 2;
			cursorFrente.close();
			cursorDerecha.close();
		}
		if(tipoLindero == 3){
			cursorDerecha = bd
					.rawQuery(
							"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=2",
							args);
			cursorFondo = bd
					.rawQuery(
							"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=3",
							args);
			totalTramos = cursorFrente.getCount() + cursorDerecha.getCount() + cursorFondo.getCount();
			tramoFinal = totalTramos + 2;
			cursorFrente.close();
			cursorDerecha.close();
			cursorFondo.close();
		}
		if(tipoLindero == 4){
			cursorDerecha = bd
					.rawQuery(
							"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=2",
							args);
			cursorFondo = bd
					.rawQuery(
							"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=3",
							args);
			cursorIzquierda = bd
					.rawQuery(
							"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=4",
							args);
			totalTramos = cursorFrente.getCount() + cursorDerecha.getCount() + cursorFondo.getCount() + 
					cursorIzquierda.getCount();
			tramoFinal = totalTramos + 2;
			cursorFrente.close();
			cursorDerecha.close();
			cursorFondo.close();
			cursorIzquierda.close();
		}
		bd.close();
		return tramoFinal;
	}
	
	public int cargarTramoFinalCierraLinderos(String codLocal, int numeroPredio){
		return 1;
	}
	
	public void recalcularTramos(String codLocal, int numeroPredio, int tipoLindero, int agregar, int aumentoTotalTramos){
		int contador = 0;
		Cursor cursorLinderoFrente;
		Cursor cursorLinderoDerecho;
		Cursor cursorLinderoFondo;
		Cursor cursorLinderoIzquierda;
		int cantidadTotalTramosARecalcular = 0;
		String[] args = new String[] { codLocal, numeroPredio + ""};
		SQLiteDatabase bd = util.getReadableDatabase();
		cursorLinderoFrente = bd
				.rawQuery(
						"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=1",
						args);
		cursorLinderoDerecho = bd
				.rawQuery(
						"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=2",
						args);
		cursorLinderoFondo = bd
				.rawQuery(
						"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=3",
						args);
		cursorLinderoIzquierda = bd
				.rawQuery(
						"SELECT * FROM P4_2N where id_local=? and P4_NroPred=? and P4_2_LindTipo=4",
						args);
		
		int cantidadLinderosFrente = cursorLinderoFrente.getCount();
		int cantidadLinderosDerecho = cursorLinderoDerecho.getCount();
		int cantidadLinderosFondo = cursorLinderoFondo.getCount();
		int cantidadLinderoIzquierda = cursorLinderoIzquierda.getCount();
		if(tipoLindero == 1){
			/*if(agregar == 1){
				cantidadTotalTramosARecalcular = cursorLinderoFrente.getCount() + 1;
			} else{*/
				cantidadTotalTramosARecalcular = cursorLinderoFrente.getCount();
			//}
			
		} 
		if(tipoLindero == 2){
			if(agregar == 1){
				cantidadTotalTramosARecalcular = cursorLinderoDerecho.getCount() + cursorLinderoFrente.getCount();
			} else{
				cantidadTotalTramosARecalcular = cursorLinderoFrente.getCount();
			}
			
		}
		if(tipoLindero == 3){
			if(agregar == 1){
				cantidadTotalTramosARecalcular = cursorLinderoFrente.getCount() + cursorLinderoDerecho.getCount() + 
						cursorLinderoFondo.getCount() + 1;
			} else{
				cantidadTotalTramosARecalcular = cursorLinderoFrente.getCount() + cursorLinderoDerecho.getCount();
			}
			//cantidadTotalTramosARecalcular = cursorLinderoFrente.getCount() + cursorLinderoDerecho.getCount() + 1;
			
		}
		if(tipoLindero == 4){
			cantidadTotalTramosARecalcular = cursorLinderoFrente.getCount() + cursorLinderoDerecho.getCount() + 
					cursorLinderoFondo.getCount();
		}
		
		Cursor actualizarTramos = bd
				.rawQuery(
						"SELECT * FROM P4_2N where id_local=? and P4_NroPred=?",
						args);
		contador = cantidadTotalTramosARecalcular;
		/*if (actualizarTramos.moveToFirst()) {
			do {
				int numeroTramo = actualizarTramos.getInt(4);
				if(actualizarTramos.getCount() >= contador){
					ContentValues valores = new ContentValues();
					valores.put("P4_2_1A_i", (contador));
					valores.put("P4_2_1A_f", (contador + 1));

					int ind = bd
							.update("P4_2N",
									valores,
									"id_local=? and P4_NroPred=? and P4_2_1A_NroTramo=?",
									new String[] { codLocal + "",
											numeroPredio + "", numeroTramo + "" });
					contador++;
				}
			} while (actualizarTramos.moveToNext());
		}*/
		int numeroLinderoFrente = 1;
		int numeroLinderoDerecho = 1;
		int numeroLinderoFondo = 1;
		int numeroLinderoIzquierdo = 1;
		/*if (cursorLinderoFrente.moveToFirst()) {
				do {
					if(actualizarTramos.getCount() > contador){
						int numeroTramo = cursorLinderoFrente.getInt(3);
						ContentValues valores = new ContentValues();
						valores.put("P4_2_1A_i", (contador));
						valores.put("P4_2_1A_f", (contador + 1));
						int ind = bd
								.update("P4_2N",
										valores,
										"id_local=? and P4_NroPred=? and P4_2_1A_NroTramo=? and P4_2_LindTipo=1",
										new String[] { codLocal + "",
												numeroPredio + "", numeroLinderoFrente + "" });
						contador++;
						numeroLinderoFrente++;
					}
			} while (cursorLinderoFrente.moveToNext());
		}*/
		modificarTramosTipoLindero(tipoLindero, cursorLinderoDerecho, actualizarTramos, contador,
				cantidadLinderosFrente, numeroLinderoDerecho, bd, codLocal, numeroPredio, cursorLinderoFondo,
				cantidadLinderosDerecho, numeroLinderoFondo, cursorLinderoIzquierda, cantidadLinderosFondo, 
				numeroLinderoIzquierdo, agregar);
		
		bd.close();
		actualizarTramos.close();
		cursorLinderoFrente.close();
		cursorLinderoDerecho.close();
		cursorLinderoFondo.close();
	}
	
	public int modificarTramosDerecha(Cursor cursorLinderoDerecho, Cursor actualizarTramos, int contador,
			int cantidadLinderosFrente, int numeroLinderoDerecho, SQLiteDatabase bd, String codLocal, 
			int numeroPredio, int agregar){
		if (cursorLinderoDerecho.moveToFirst()) {
			do {
				int actualizarTramosNumero = actualizarTramos.getCount();
				int numeroTramo = cursorLinderoDerecho.getInt(3);
				if(actualizarTramosNumero - 1 > contador){
					ContentValues valores = new ContentValues();
					valores.put("P4_2_1A_i", (cantidadLinderosFrente + numeroLinderoDerecho + agregar));
					valores.put("P4_2_1A_f", (cantidadLinderosFrente + numeroLinderoDerecho + 1 + agregar));
					int ind = bd
							.update("P4_2N",
									valores,
									"id_local=? and P4_NroPred=? and P4_2_1A_NroTramo=? and P4_2_LindTipo=2",
									new String[] { codLocal + "",
											numeroPredio + "", numeroTramo + "" });
					contador++;
					numeroLinderoDerecho++;
				} else{
					ContentValues valores = new ContentValues();
					valores.put("P4_2_1A_i", actualizarTramos.getCount());
					valores.put("P4_2_1A_f", 1);
					int ind = bd
							.update("P4_2N",
									valores,
									"id_local=? and P4_NroPred=? and P4_2_1A_NroTramo=? and P4_2_LindTipo=4",
									new String[] { codLocal + "",
											numeroPredio + "", numeroTramo + "" });
				}
			} while (cursorLinderoDerecho.moveToNext());
		}
		return contador;
	}
	
	public int modificarTramosFondo(Cursor cursorLinderoFondo, Cursor actualizarTramos, int contador,
			int cantidadLinderosFrente, int cantidadLinderosDerecho, int numeroLinderoFondo, SQLiteDatabase bd, 
			String codLocal, int numeroPredio, int agregar){
		if (cursorLinderoFondo.moveToFirst()) {
			do {
				int actualizarTramosNumero = actualizarTramos.getCount();
				int numeroTramo = cursorLinderoFondo.getInt(3);
				if(actualizarTramosNumero - 1 > contador){
					ContentValues valores = new ContentValues();
					valores.put("P4_2_1A_i", (cantidadLinderosFrente + cantidadLinderosDerecho + numeroLinderoFondo + agregar));
					valores.put("P4_2_1A_f", (cantidadLinderosFrente + cantidadLinderosDerecho + numeroLinderoFondo + 1 + agregar));
					int ind = bd
							.update("P4_2N",
									valores,
									"id_local=? and P4_NroPred=? and P4_2_1A_NroTramo=? and P4_2_LindTipo=3",
									new String[] { codLocal + "",
											numeroPredio + "", numeroTramo + "" });
					contador++;
					numeroLinderoFondo++;
				} else{
					ContentValues valores = new ContentValues();
					valores.put("P4_2_1A_i", actualizarTramos.getCount());
					valores.put("P4_2_1A_f", 1);
					int ind = bd
							.update("P4_2N",
									valores,
									"id_local=? and P4_NroPred=? and P4_2_1A_NroTramo=? and P4_2_LindTipo=4",
									new String[] { codLocal + "",
											numeroPredio + "", numeroTramo + "" });
				}
			} while (cursorLinderoFondo.moveToNext());
		}
		return contador;
	}

	public void modificarTramosIzquierdo(Cursor cursorLinderoIzquierda, Cursor actualizarTramos, int contador,
			int cantidadLinderosFrente, int cantidadLinderosDerecho, int cantidadLinderosFondo, 
			int numeroLinderoIzquierdo, SQLiteDatabase bd, String codLocal, int numeroPredio, int agregar, 
			int tipoTramo){
		if (cursorLinderoIzquierda.moveToFirst()) {
			do {
				int actualizarTramosNumero = actualizarTramos.getCount() + agregar;
				int numeroTramo = cursorLinderoIzquierda.getInt(3);
				if(actualizarTramosNumero - 1 > contador){
					ContentValues valores = new ContentValues();
					if(tipoTramo != 4){
						valores.put("P4_2_1A_i", (cantidadLinderosFrente + cantidadLinderosDerecho + cantidadLinderosFondo + numeroLinderoIzquierdo + agregar));
						valores.put("P4_2_1A_f", (cantidadLinderosFrente + cantidadLinderosDerecho + cantidadLinderosFondo + numeroLinderoIzquierdo + 1 + agregar));
					} else{
						valores.put("P4_2_1A_i", (cantidadLinderosFrente + cantidadLinderosDerecho + cantidadLinderosFondo + numeroLinderoIzquierdo));
						valores.put("P4_2_1A_f", (cantidadLinderosFrente + cantidadLinderosDerecho + cantidadLinderosFondo + numeroLinderoIzquierdo + 1));
					}
					int ind = bd
							.update("P4_2N",
									valores,
									"id_local=? and P4_NroPred=? and P4_2_1A_NroTramo=? and P4_2_LindTipo=4",
									new String[] { codLocal + "",
											numeroPredio + "", numeroTramo + "" });
					contador++;
					numeroLinderoIzquierdo++;
				} else{
					ContentValues valores = new ContentValues();
					if(agregar == 1){
						valores.put("P4_2_1A_i", actualizarTramos.getCount() + 1);
					}else{
						valores.put("P4_2_1A_i", actualizarTramos.getCount());
					}
					valores.put("P4_2_1A_f", 1);
					int ind = bd
							.update("P4_2N",
									valores,
									"id_local=? and P4_NroPred=? and P4_2_1A_NroTramo=? and P4_2_LindTipo=4",
									new String[] { codLocal + "",
											numeroPredio + "", numeroTramo + "" });
				}
			} while (cursorLinderoIzquierda.moveToNext());
		}
	}
	
	private void modificarTramosTipoLindero(int tipoTramo,Cursor cursorLinderoDerecho, Cursor actualizarTramos, 
			int contador, int cantidadLinderosFrente, int numeroLinderoDerecho, SQLiteDatabase bd, String codLocal, 
			int numeroPredio, Cursor cursorLinderoFondo, int cantidadLinderosDerecho, int numeroLinderoFondo, 
			Cursor cursorLinderoIzquierda, int cantidadLinderosFondo, int numeroLinderoIzquierdo, int aumentoTotalTramos){
		int contadorResultanteDerecha = 0;
		int contadorResultanteFondo = 0;
		if(tipoTramo == 1){
			contadorResultanteDerecha = modificarTramosDerecha(cursorLinderoDerecho, actualizarTramos, contador, 
					cantidadLinderosFrente, numeroLinderoDerecho, bd, codLocal, numeroPredio, aumentoTotalTramos);
			contadorResultanteFondo = modificarTramosFondo(cursorLinderoFondo, actualizarTramos, 
					contadorResultanteDerecha, cantidadLinderosFrente, cantidadLinderosDerecho, numeroLinderoFondo, 
					bd, codLocal, numeroPredio, aumentoTotalTramos) + numeroLinderoDerecho;
			modificarTramosIzquierdo(cursorLinderoIzquierda, actualizarTramos, contadorResultanteFondo, cantidadLinderosFrente,
					cantidadLinderosDerecho, cantidadLinderosFondo, numeroLinderoIzquierdo, bd, codLocal,
					numeroPredio, aumentoTotalTramos, tipoTramo);
		} 
		if(tipoTramo == 2){
			contadorResultanteFondo = modificarTramosFondo(cursorLinderoFondo, actualizarTramos, 
					contador + numeroLinderoFondo, cantidadLinderosFrente, cantidadLinderosDerecho, numeroLinderoFondo, 
					bd, codLocal, numeroPredio, aumentoTotalTramos);
			modificarTramosIzquierdo(cursorLinderoIzquierda, actualizarTramos, contadorResultanteFondo, 
					cantidadLinderosFrente, cantidadLinderosDerecho, cantidadLinderosFondo, numeroLinderoIzquierdo, 
					bd, codLocal, numeroPredio, aumentoTotalTramos, tipoTramo);
		} 
		if(tipoTramo == 3){
			if(aumentoTotalTramos == 1){
				modificarTramosIzquierdo(cursorLinderoIzquierda, actualizarTramos, contador, 
						cantidadLinderosFrente, cantidadLinderosDerecho, cantidadLinderosFondo, numeroLinderoIzquierdo, 
						bd, codLocal, numeroPredio, aumentoTotalTramos, tipoTramo);
			} else{
				modificarTramosIzquierdo(cursorLinderoIzquierda, actualizarTramos, contador + cantidadLinderosFondo, 
						cantidadLinderosFrente, cantidadLinderosDerecho, cantidadLinderosFondo, numeroLinderoIzquierdo, 
						bd, codLocal, numeroPredio, aumentoTotalTramos, tipoTramo);
			}
			
		} 
		if(tipoTramo == 4){
			if(aumentoTotalTramos == 1){
				modificarTramosIzquierdo(cursorLinderoIzquierda, actualizarTramos, contador, 
						cantidadLinderosFrente, cantidadLinderosDerecho, cantidadLinderosFondo, numeroLinderoIzquierdo, 
						bd, codLocal, numeroPredio, aumentoTotalTramos, tipoTramo);
			} else{
				modificarTramosIzquierdo(cursorLinderoIzquierda, actualizarTramos, contador + cantidadLinderosFondo, 
						cantidadLinderosFrente, cantidadLinderosDerecho, cantidadLinderosFondo, numeroLinderoIzquierdo, 
						bd, codLocal, numeroPredio, aumentoTotalTramos, tipoTramo);
			}
		}

	}
	
	public void actualizarObservacion(String codigoLocal, int numeroPredio, String observacion){
		SQLiteDatabase bd = util.getWritableDatabase();
		ContentValues valores = new ContentValues();
		valores.put("P4_1_Obs", observacion);

		int ind = bd
				.update("FRENTE_LINDEROS",
						valores,
						"id_local=? and P4_NroPred=?",
						new String[] { codigoLocal,
								numeroPredio + "" });
		bd.close();
	}
}